//
//  main.cpp
//  Homework1
//
//  Created by Maksim Dimitrov on 7/25/14.
//  Copyright (c) 2014 Home. All rights reserved.
//

#include <iostream>
#include <cmath>
using namespace std;

bool isLeapYear(int year){
    return (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0));
}

int lastDay(int month, int year){
    int result = 0;
    switch (month){
        
        case 2: result = (isLeapYear(year) ? 29:28); break;
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12: result = 31; break;
        case 4:
        case 6:
        case 9:
        case 11: result = 30; break;
        default: cout << "ERROR" << endl; break;
    }
    return result;
    
}

int main(int argc, const char * argv[])
{
    // Задача 1.
    cout << "Задача 1. Въведете три числа.\n";
    double a,b,c;
    cin >> a >> b >> c;
    if ((c > min(a,b)) && (c < max(a,b))) {
        cout << "Числото " << c << " е между " << min(a,b) << " и " << max(a,b) << endl;
    }
    else
        cout << "Числото " << c << " не е между " << min(a,b) << " и " << max(a,b) << endl;
    cout << endl;
    // край на задача 1
    
    // Задача 2.
    cout << "Задача 2. Въведете две числа.\n";
    double num1, num2, sum, subtr, product, div, remaindr = 0;
    cin >> num1 >> num2;
    sum = num1 + num2;
    subtr = num1 - num2;
    product = num1 * num2;
    if (num2 != 0){
        div = num1 / num2;
        remaindr = int(num1) % int(num2);
    }else
        cout << "Cannot divide by zero!\n";
    
    cout << "Сума               = " << sum << endl;
    cout << "Разлика            = " << subtr << endl;
    cout << "Произведение       = " << product << endl;
    cout << "Частно             = " << div << endl;
    cout << "Остатък при делене = " << remaindr << endl;
    cout << endl;
    // край на задача 2
    
    // Задача 3
//    double num1, num2;
//    cin >> num1 >> num2;
    cout << "Задача 3. Ползва числата въведени в задача 2\n";
    int swapn = num1;
    num1 = num2;
    num2 = swapn;
    cout << "Разменени стойности: " << num1 << " " << num2 << endl;
    cout << endl;
    // край на задача 3
    
    // Задача 4
//    double num1, num2;
//    cin >> num1 >> num2;
    cout << "Задача 4. Отново ползваме числата от зад. 2\n";
    cout << "В нарастващ ред: " << min(num1,num2) << " " << max(num1,num2) << endl;
    cout << endl;
    // край на задача 4
    
    // Задача 5 (Задачи 5 и 6 ползват задача 3 за размените.
    cout << "Задача 5. Въведете 3 числа.\n";
    int x,y,z;
    cin >> x >> y >> z;
    if (x < y)
        swap(x,y);
    if (x < z)
        swap(x,z);
    if (y < z)
        swap(y,z);
    cout << "В низходящ ред: " << x << " " << y << " " << z << endl;
    cout << endl;
    // край на задача 5
    
    // Задача 6
    cout << "Задача 6. Въведете три числа.\n";
    int a1,a2,a3;
    cin >> a1 >> a2 >> a3;
    swap(a1,a2);
    swap(a2,a3);
    cout << "Разменени стойности: " << a1 << " " << a2 << " " << a3 << endl;
    cout << endl;
    
    // край на задача 6
    
    // задача 7 има много красноречиво условие. Ако няма да излизаме, как ще си купим лекарства? Къде се ползва часа?
    
    // Допълнителната задача. (за следващия ден)
    
    int day,month,year;
    cout << "Please enter DAY MONTH YEAR: ";
    cin >> day >> month >> year;
    if (day > lastDay(month, year) || day < 1 || month < 1 || month > 12 )
        cout << "Invalid date!\n";
    else{
        if (day != lastDay(month, year))
            day++;
        else{
            if (month != 12){
                month++;
                day = 1;
            }
            else{
                year++;
                month = 1;
                day = 1;
            }
        }
        cout << day <<" "<< month <<" "<< year << endl;
    }
    
}

